package top.wanzc.java.basic.regex;

import java.text.MessageFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MarkdownTextToHrefHtml {

	public static void main(String[] args) {
        String str = "急症室會優先診治被分流為危殆和危急的病人。次緊急及非緊急類病人有可能需較長時間等候，敬請見諒及耐心等候。\\n病況輕微的病人可考慮使用其他醫療服務（[基層醫療指南](https://apps.pcdirectory.gov.hk/public/tc)或[香港醫生網](http://www.hkdoctors.org)）。\\n上述數據為預計急症室等候時間，急症室等候時間是根據現有的最新資訊及過往數據進行估算。\\n<BULB/>指急症室正在治理分流類別 I/II 的病人。";
        System.out.println(replaceMarkdownTextToHrefHtml(str));
        // 急症室會優先診治被分流為危殆和危急的病人。次緊急及非緊急類病人有可能需較長時間等候，敬請見諒及耐心等候。\n病況輕微的病人可考慮使用其他醫療服務（<a href="https://apps.pcdirectory.gov.hk/public/tc">基層醫療指南</a>或<a href="http://www.hkdoctors.org">香港醫生網</a>）。\n上述數據為預計急症室等候時間，急症室等候時間是根據現有的最新資訊及過往數據進行估算。\n<BULB/>指急症室正在治理分流類別 I/II 的病人。
	}
	
	  private static String replaceMarkdownTextToHrefHtml(String str) {
	        if (str == null || str.trim().length() == 0) {
	            return str;
	        }
	        final String format = "<a href=\"{0}\">{1}</a>";
	        String lastStr = str;
	        final Pattern p = Pattern.compile("\\[(.+?)\\]\\(((http://||https://).+?)\\)");
	        final Matcher m = p.matcher(str);
	        int index = 0;
	        try {
	            while (m.find() && index <= 10000) {
	                index++;
	                String fullSegment = m.group(0);
	                String text = m.group(1);
	                String link = m.group(2);
	                String replacedSegment = MessageFormat.format(format, link, text);
	                lastStr = lastStr.replace(fullSegment, replacedSegment);
	            }
	            return lastStr;
	        } catch (Exception e) {
	            // log.error("replace markdown text to href html unsuccessfully!", e);
	            return lastStr;
	        }
	    }

}
